Skip to content

Conversation

@Red-Portal
Copy link
Member

@Red-Portal Red-Portal commented Oct 22, 2025

This PR does the following:

  • The interface to AdvancedVI is updated to match the new v0.6 version.
  • The way vi calls optimize is slightly changed so that algorithms that expect an unconstrained space can be used without being aware of Bijectors. In particular, the user is now expected to provide a q <: Bijectors.TransformedDistribution. vi will then unwrap the underlying unconstrained distribution, which is passed to AdvancedVI. Once the algorithm terminates, the result will be wrapped back and then returned.
  • The deprecated v0.2-era interface is removed.

@Red-Portal Red-Portal requested review from mhauru and penelopeysm and removed request for penelopeysm October 22, 2025 08:33
@github-actions
Copy link
Contributor

Turing.jl documentation for PR #2699 is available at:
https://TuringLang.github.io/Turing.jl/previews/PR2699/

@codecov
Copy link

codecov bot commented Oct 22, 2025

Codecov Report

❌ Patch coverage is 0% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 58.56%. Comparing base (0eb8576) to head (115802d).
⚠️ Report is 1 commits behind head on breaking.

Files with missing lines Patch % Lines
src/variational/VariationalInference.jl 0.00% 2 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (0eb8576) and HEAD (115802d). Click for more details.

HEAD has 6 uploads less than BASE
Flag BASE (0eb8576) HEAD (115802d)
23 17
Additional details and impacted files
@@              Coverage Diff              @@
##           breaking    #2699       +/-   ##
=============================================
- Coverage     86.45%   58.56%   -27.90%     
=============================================
  Files            21       20        -1     
  Lines          1418     1395       -23     
=============================================
- Hits           1226      817      -409     
- Misses          192      578      +386     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Member

@mhauru mhauru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Red-Portal.

Since this changes the user-interface, could you please set the target branch of this PR to be breaking? We use that branch to collect breaking changes into a single, larger release. Currently breaking points at the same commit as main, so you shouldn't have to mess with git history for this.

In that same process, could you also please add an entry in HISTORY.md describing to users all interface changes (arguments, return values, behaviour) and what they can do to adapt to them. Maybe a code example of "this is how you used to call vi, this is how you do the same thing now", that sort of thing.

@Red-Portal Red-Portal changed the base branch from main to breaking October 24, 2025 02:03
Red-Portal and others added 8 commits October 24, 2025 00:00
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@Red-Portal Red-Portal requested a review from mhauru October 24, 2025 04:30
@penelopeysm
Copy link
Member

I'm actually sorry to butt in on this, but are there new features available in 0.5, or is it just an interface change?

@Red-Portal
Copy link
Member Author

@penelopeysm No new features.

@penelopeysm
Copy link
Member

Okay. The reason why I asked is because this is an interface change for Turing and that is kind of annoying for end users if they don't get any benefit. I wonder in that case if it is worth doing either:

  1. Not bumping the compat in Turing, waiting for the next release of AdvancedVI that has new features; or

  2. Mapping the existing Turing interface to the new AdvancedVI interface, so that it's not a breaking change. I don't know how possible this is.

Other than that, I second everything that @mhauru brought up here, so I won't also review the details of this.

@Red-Portal
Copy link
Member Author

@penelopeysm That's reasonable. I think we could go with the following for now:

Not bumping the compat in Turing, waiting for the next release of AdvancedVI that has new features;

@penelopeysm penelopeysm removed their request for review October 25, 2025 15:57
@Red-Portal Red-Portal changed the title Update variational inference interface to match [email protected] Update variational inference interface to match [email protected] Nov 19, 2025
Red-Portal and others added 11 commits November 19, 2025 17:01
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[JuliaFormatter v1.0.62] reported by reviewdog 🐶

Turing.jl/docs/src/api.md

Lines 111 to 122 in eaac4c3

| Exported symbol | Documentation | Description |
|:---------------------- |:------------------------------------------------- |:---------------------------------------------------------------------------------------- |
| `vi` | [`Turing.vi`](@ref) | Perform variational inference |
| `q_locationscale` | [`Turing.Variational.q_locationscale`](@ref) | Find a numerically non-degenerate initialization for a location-scale variational family |
| `q_meanfield_gaussian` | [`Turing.Variational.q_meanfield_gaussian`](@ref) | Find a numerically non-degenerate initialization for a mean-field Gaussian family |
| `q_fullrank_gaussian` | [`Turing.Variational.q_fullrank_gaussian`](@ref) | Find a numerically non-degenerate initialization for a full-rank Gaussian family |
| `KLMinRepGradDescent` | [`Turing.Variational.KLMinRepGradDescent`](@ref) | KL divergence minimization via stochastic gradient descent with the reparameterization gradient |
| `KLMinRepGradProxDescent` | [`Turing.Variational.KLMinRepGradProxDescent`](@ref) | KL divergence minimization via stochastic proximal gradient descent with the reparameterization gradient over location-scale variational families |
| `KLMinScoreGradDescent` | [`Turing.Variational.KLMinScoreGradDescent`](@ref) | KL divergence minimization via stochastic gradient descent with the score gradient |
| `KLMinWassFwdBwd` | [`Turing.Variational.KLMinWassFwdBwd`](@ref) | KL divergence minimization via Wasserstein proximal gradient descent |
| `KLMinNaturalGradDescent` | [`Turing.Variational.KLMinNaturalGradDescent`](@ref) | KL divergence minimization via natural gradient descent |
| `KLMinSqrtNaturalGradDescent` | [`Turing.Variational.KLMinSqrtNaturalGradDescent`](@ref) | KL divergence minimization via natural gradient descent in the square-root parameterization |

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants